GFA-AMIGAB FEHLER RADIUS HOR_GADGET SUPERLAYER DESTB DESTH BREITE BREITEMM HOEHEMM POLZAHL XRAST RESTSTIFTE BALKENBREITE WINDBREITE XZIEL F_FENSTER OLDPRINTDENSITIY PREFS_PUFFER IODRP_REQ INDEX MENUTITEL TOPAZ.FONT STYLE RECHTE_MAUSTASTE INITBITMAP XMOUSE QUELL_LOY FORBID PERMIT ZIELTEILUNG_X ZIELTEILUNG_Y LINKE_MAUSTASTE ALPHA ALPHA2 ALPHA1 OFFSET HORIZONTAL GEDRUECKT RUY_LAYER XSSOLL ARBEITS_WIND SETFON SPALTENBREITE ZEILENHOEHE QUELL_X KONTR HILFSRAST2 PIXEL LAGE DATEINAME RICHTUNG RICHTUNG1 TITEL D_NAME DEVICE_NAME TEXT MENUPUNKT PRGNAME DISKFONTNAME FONTNAME BEREICH OBJEKT POINTER_UP POINTER_DOWN FONTGROESSE TOPAZ SEL_TEXT IMAGE TEXTATTR POINTER_RIGHT POINTER_LEFT B CHUNKNAME HEADER PUFFER MUSTER GADGETDEFS PROPINFO PUFFER GADGETSDEFS HOR_GADGET VER_GADGET USERPORT INTMESS BITMAPSTRUKTURADRESSE BITPLANEBASISADRESSE KONTROLLWERT BITMAPSTRUKTUR_ADR BITPLANEADRESSE LAYERSTRUCTPTR LAYERINFOPTR LAYER BITMAP SUPERBITMAP SUPERBITPLANE SUPERLAYER SUPERRAST SUPERLAYERINFO EREIGNIS VIEWPORT MAP COLOURMAP ERGEBNIS BITPLANE POLZAHLEINTRAG LAENGE BITPLANEN PROP_GADGETS PROP_GADGET REGION RECTANGLE RASTPORT P_PORT F_FENSTER F_RASTPORT F_SCREEN F_VIEWPORT F_COLORMAP P_SIGTASK STATUS FEHLER WINDADD SCREENADD VP_MODI MODUS PREFS_PUFFER IODRP_REQ REPLY_PORT COPIED_RAST COPIED_BITMAP COPIED_BITPLANE BITPLANES ZIELBITMAP SIGNAL_NUMBER TASK_NR SIGNAL_NR COMAP ERROR REPLYPORT SCREENLAYERINFO SCREENBITMAP LAYERRAST NEWLAYER NEWLAYERRAST PRTLAYER PRTLAYERRAST ADRESSE DISKFONTLIBRARY START_TEXTFONT TEXTATTR AKT_TEXTFONT OLD_TEXTFONT GL_SCHRIFTARTEN MOEGL_SCHRIFTARTEN PUFFER_BITMAP PUFFER_BITPLANE ERSTE_ZEILE ZEILENZAHL ALTE_ERSTE_ZEILE HILFSRASTPORT HILFSBITMAP HILFSBITPLANE SIZEVORHER SIZENACHHER MESSAGE SIZE1 SIZE2 HILFSLAYER ITEXT INTUITEXT QUELLRASTPORT PRTLRAST PRTRAST BREITE UNDO_BITMAP UNDO_BITPLANE FONT_NEW_GADADR PROP_GADADR VERTPOT_ADR PUT_GADADR PDT_GADADR UNDER_GADADR CURSIV_GADADR BOLD_GADADR OUT_GADADR CENTER_GADADR BREAK_GADADR OK_GADADR VERTBODY PUFFERLAENGE STRING STR_GADADR STR_GADL FONT_NEW_GADL VERTPOT PROP_GADL PUT_GADL PDT_GADL UNDER_GADL CURSIV_GADL BOLD_GADL OUT_GADL CENTER_GADL BREAK_GADL OK_GADL STRUKTUR_ADR STRUKTUR_LAENGE MEMORY BOOLEAN_GADGET BORDER KOORD IMAGE STRING_ADR STRING_GADGET STRING_INFO STRING_PUFFER UNDO_PUFFER POT_ADR PROP_INFO INT_PUFFER LONGWORD PROPV_GADADR PROPV_GADL HORIZBODY SCROLLUP_GADADR SCROLLUP_GADL SCROLLDOWN_GADADR SCROLLDOWN_GADL HORIZPOT_ADR PROPH_GADADR PROPH_GADL SCROLLLEFT_GADADR SCROLLLEFT_GADL SCROLLRIGHT_GADADR SCROLLRIGHT_GADL LAYERINFO WIND_RAST WIND_BITMAP WIND_LAYER WINDLAYERINFO WINDLAYER LAYER_RAST LOX_LAYER PROPH_GADGET HORIZPOT XSSOLL GADADR FLAGS NUMGAD Y2 VERTTBODY TVERTBODY TVERTPOT TVERTPOT_ADR TPROP_GADADR TPROP_GADL TSCROLLUP_GADADR TSCROLLUP_GADL TPUT_GADADR TSCROLLDOWN_GADADR TSCROLLDOWN_GADL CHUNK_LAENGE VIEWMODES DATEIL NGE_ALT DATEILAENGE_ALT LAENGE2 BODY_LAENGE HILFSRAST PUFFER_RASTPORT WEITER MOEGLICHKEIT1 MOEGLICHKEIT2 MOEGLICHKET2 STATUS STREIFEN1 STREIFEN2 STREIFEN ANTWORT START_LOETAUGE ZIEL_LOETAUGE MULTI_GEDRUCKT MODUS ZIEHEN RASTER1 ASYNCHRON_GEDRUCKT ABBRUCH POSITIONIERUNG ACCEPT AUTOSCROLLING OUTLINE LINKE_MAUSTASTE MENUPUNKT RECHTE_MAUSTASTE GADGET_GEDRUECKT GADGET_LOSGELASSEN KOPIEREN ALLOCMEM FREEMEM ANZEIGEN NOTMENUPUNKT LINKEMAUSTASTE GADGET_GEDR GEFUELLT ASYNCHRONGEDRUCKT HORIZONTAL INVERS GEDRUECKT LINKE_MAUSTASTE_GEDRUECKT LINKE_MAUSTASTE_GEDR BREAK TOGGLE VERTIKAL CENTER RECHTE_MAUSTASTE_GEDRUECKT CMAP BREAK_IFF COMPLEMENT INVERSVID SEITENVERHAELTNIS_GLEICH VERZERREN NOTLINKE_MAUSTASTE_GEDRUECKT NEUER_RASTPORT KONTINUIERLICH SQRT FNMESSAGE SCHNITTW SCHNITTS FNSCHNITTS XRAST ENDUPDATE SCROLLLAYER SETPREFS ALLOCMEM COPYMEM OPENLIBRARY MEMORY AKJKJKJK DKJDKJ DK DKJDKJDKJ X BLTBITMAP SYNCSUPERBITMAP CREATEUPFRONTLAYER REM_RECT CLIPBLIT POINT ZEILE MEMORY ALLOCMEM FREEMEM BITPLANE POSITION BREITE HOEHE GADGETBREITE MODUS DESTB DESTH WORTE VOLLZEILEN RESTSTIFTE ZEILE SCHRITT SUPERBREITE SUPERHOEHE LAYOUTBREITE LAYOUTHOEHE XRAST YRAST XOFFSET1 YOFFSET1 XOFFSET2 YOFFSET2 XRAST1 YRAST1 XRASTX1 TOXR0 XSTART YSTART XZIEL1 YZIEL1 XZIEL2 YZIEL2 WINDBREITE WINDHOEHE DATEINAME HOR_BREITE DRX BOXBREITE BALKENBREITE BOXHOEHE BALKENHOEHE XSSOLL YSSOLL XZIEL YZIEL F_BREITE F_HOEHE F_VP_MODI B_HOEHE VP_MODI OLDPRINTSHADE INDEX XMOUSE YMOUSE FONTHOEHE XOFFSET YOFFSET QUELLBREITE QUELLHOEHE ZIELBREITE ZIELHOEHE QUELL_LOX QUELL_LOY ZIEL_LOX ZIEL_LOY MEMORYPTR ALLOCPTR FREEPTR QUELLY QUELLX ZIELTEILUNG_X ZIELTEILUNG_Y ZIELRECHTECK_LOX ZIELRECHTECK_LOY ZIELRECHTECK_RUX ZIELRECHTECK_RUY ZIELX ZIELY WINDOWBREITE OFFSET INDEX_FIRST ANZAHL INDEX_FIRST_OLD INDEX_AKT PROP_GAD_HOEHE INDEX_LAST TEXTLAENGE MAX_CHAR INDEX_ALT FONTGROESSE YRU LOY_LAYER LOX_LAYER RUX_LAYER RUY_LAYER XSOLL LAYERBREITE LAYERHOEHE SCR_BREITE SCR_HOEHE GRAPHIK_BREITE GRAPHIK_HOEHE QUELL_X QUELL_Y QUELL_RUX QUELL_RUY ZIEL_X ZIEL_Y ZIEL_RUX ZIEL_RUY ZAEHLER ANFANG ZIELSPALTE SIGNUM ZIELZEILE GESAMTHOEHE GESAMTBREITE LAST_X LAST_Y PIXEL BITPLANE_BREITE BITPLANE_HOEHE PUFFER_BITPLANE_BREITE PUFFER_BITPLANE_HOEHE MINTERM FEHLER WEITER WINDNR GRAPHIKWERT STIFT RESTSTIFTE BITNR VERSION POLZAHL PKOLZAHL ANTWORT P_SIGBIT OLDPRINTDENSITIY OLDPRINTDENSITY ERROR SIGNAL_NR STATUS RASTER VERSIONALT VERION UNTERMENUPUNKT MENUPUNKT MENUTITEL INDEX MENUTITELIST MENUPUNKTIST STYLE MUSTER SPALTE ZEILE OBJEKT SPEC TEXT_WIND MAX_SEL_ANZAHL WIND_NR GADGET_NR TOGGLE MODUS STIL_ALT STIL_AKT AKT_STIL ALT_STIL ARBEITS_SCR ARBEITS_WIND INDEX_LAST DUMMY TIEFE COMPRESSION BYTES_ZEILE BYTES_ZEILE_SCR BITPLANE_INDEX BYTES_GESCHRIEBEN ANZAHL FUELLBYTE BYTES_ZEILE_BTM ZAEHLER ARBEITSWIND LINIENART MUSTER_WIND DRAWMODE ZEILENNR MAUSPOS GRAPHIKMODUS EINGANGSVARIABLEN OFFSETS OFFSETS_VER1 OFFSETS_VER2 OFFSETS_VER3 FADENKREUZ RESETED POINT_RESET POINT_SET ENDES OFFSETS_VER4 ZEIGER WEITER SOFORT QUARK POINTER_UP POINTER_DOWN FONTS FONTS2 MAUSZEIGER POINTER_RIGHT POINTER_LEFT POINTER_LEFT1 POINTER_RIGHT1 POINTER_UP1 MENUPUNKTE PDOWN PLEFT PRIGHT PROPGADGET VERT_PROPGADGET HORIZ_PROPGADGET DATEI_LADEN DATEI_SICHERN DATEI_DRUCKEN DATEI_L SCHEN DATEI_NEU DATEI_ENDE MODUS_ANH MODUS_EINF MODUS_ NDERN MODUS_L SCHEN AKTIVIEREN_ANWEISUNG AKTIVIEREN_WHILE AKTIVIEREN_REPEAT AKTIVIEREN_ZWEIFACHVERZ AKTIVIEREN_MEHRFACHVERZ AKTIVIEREN_UNTERPROGRAMM FIGUREN_LINIE FIGUREN_BOX FIGUREN_LINIENZUG RECTIN FIGUREN_KREIS FIGUREN_PUNKT INIT_BITMAP ALERT CLOSE_BITMAP AUFRAEUMEN INFO_LAYER INFO_BITMAP KEYBOARD ELSEIF MESSAGE GRAPHICDUMP DATEI_DRUCKEN1 FADENGRAFIK PLOT FUNKTIONS LAYOUT_LADEN LAYOUT_SICHERN LAYOUT_DRUCKEN LAYOUT_SPEICHER_DRUCKEN LAYOUT_DISK_DRUCKEN LAYOUT_L SCHEN GOSUB LAYOUT_LOESCHEN LAYOUT_INITIALISIEREN LAYOUT_ENDE LAYOUT_SPEICHER_DRUCKEN1 LAYOUT_INTIALISIEREN ELEMENTE_LOETAUGE ELEMENTE_LOETAUGE2 ELEMENTE_LOETAUGE1 ELEMENTE_VERBINDUNG LOCAL ELEMENTE_IC LOETAUGE ELEMENTE_VERBINDUNG_1 ELEMENTE_VERBINDUNG_2 LOESCHEN SONSTIGES_LOESCHEN GRAPHICSAVE LAYOUT_SICHERN1 PROPGADGETS SONSTIGES_RAHMEN RAHMEN FEHLER ELEMENTE_VERBINDUNG_3 LAYOUT_SPEICHER_DRUCKEN2 HARDCOPY LAYOUT_SPEICHER_DRUCKEN3 MULTI_AUFRAEUMEN SINGLE_TASK_DRUCKEN LAYOUT_MULTI_DRUCKEN LAYOUT_MULTI_TASK_DRUCKEN LAYOUT_MULTITASK_DRUCKEN PROCEDURE QUARK LAYOUT_VERBINDUNG ELEMENTE_TRANSISTORFASSUNG ELEMENTE_TRANSISTORFASSUGN SONSTIGES_TEXT LAYOUT_ASYNCHRON_DRUCKEN SYNCHRON_AUFRAEUMEN ASYNCHRONDRUCK_AUFRAEUMEN SYNCHRON_DRUCKEN ASYNCHRONGEDRUCKT_AUFRAEUMEN TEXT_ZEILE MENUBEHANDLUNG EREIGNISBEHANDLUNG MANUELLSCROLLING MANUELL_SCROLLING AKTIVIERE_ROM_ZEICHENSATZ AKTIVIERE_DISK_ZEICHENSATZ AKTIVIERE_ZEICHENSATZ SCHRIFTART MANIPULATIONEN_KOPIEREN UNTIL DEBUG SCROLLING PUT#MANIPULATIONEN_KOPIEREN_VERSCHIEBEN MANIPULATIONEN_VERZERREN AUSGABE SPEZIAL_INTERPOLIEREN SPEZIAL_INTERPOLIEREN_METHODE1 SPEZIAL_INTERPOLIEREN_ABTRAGEN SPEZIAL_INTERPOLIEREN_AUFF SPEZIAL_OUTLINE SPEZIAL_RAHMEN SPEZIAL_MUSTER_EINSTELLEN WHILE SPEZIAL_F SPEZIAL_BEREICH_F MANIPULATIONEN_DREHEN BILDPUNKT DEBUYA DEBUGA SONSTIGES_FED_LADEN GRAPHIK_PUNKT GRAPHIK_LINIE GRAPHIK_OBJEKT MANIPULATIONEN_INVERTIEREN MANIPULATIONEN_LOESCHEN SHOW_REGION LAYOUT_SYNCHRON_DRUCKEN TEXT_ZEILE_ALT TEXT_ZEILE_ITEXT RECTIN_SPIEGELN MANIPULATIONEN_SPIEGELN REFRESH SONSTIGES_UNDO MANIPULATIONEN_ZENTRIEREN SPEZIAL_FARBEN_TAUSCHEN SONSTIGES_FARBEN_TAUSCHEN GRAPHIK_PINSEL TEXT#TEXT_BENUTZEROBERFLAECHE_AUFRAEUMEN SELECTOR_REFRESH MODIFYTPROP TESTFONTS TEXT_BENUTZEROBERFLAECHE FONTS_VERZEICHNIS STRING_GADGET BOOLEAN_TGADGET PROP_GADGET BOOLEAN_IGADGET REM_GADGET TEXT_INIT"TEXT_BENUTZEROBERLAECHE_AUFRAEUMEN TEXT_ZEILE_1 TEXT_AUSWERTUNG TEXT_DARSTELLUNG INIT_ARBEITSFLAECHE MAUSZEIGER PULL_DOWN_MENU PREFERENCES INIT_OLD INIT_IMAGES POINTER_LEFT POINTER_RIGHT1 SELECT MODIFYPROP NEWMODIFYPROP INIT_MAUSZEIGER INIT_PULL_DOWN_MENU CREATEUPFRONTLAYER INIT_TEXT INIT_TEXT_BENUTZEROBERFLAECHE INIT_FONTS_VERZEICHNIS INIT_TESTFONTS INIT_TESTFONTS_VERZEICHNIS#AUFRAEUMEN_TEXT_BENUTZEROBERFLAECHE INIT_PREFERENCES INIT_UNDO_BITMAP RETRURN GLOBAL_VARIABLES TPROP_GADGET AUFRAEUMEN_ASYNCHRONDRUCK AUFRAEUMEN_ASYNCHRON CHANGE_STYLE TEXT_CHANGE_STYLE TEXT_CHANGE_FONT TEXT_SELECTOR_REFRESH DRAW_IMAGE O_TEXT_DARSTELLUNG INIT_SBITMAP INIT_TEXT_MASKE INIT_ARBEITS_MASKE INIT_ARBEITS_SCR INIT_SLAYER INIT_ARBEITS_WIND INIT_TEXT_WIND INIT_ARBEITS_GADGETS INIT_FONT_VERZEICHNIS LAYOUT_NEU LAYOUT_LADEN_IFF BMHD_LESEN BODY_LESEN LAYOUT_INIT LAYOUT_LADEN_INTERN LAYOUT_SICHERN_INTERN LAYOUT_SICHERN_IFF LAYOUT_MISCHEN_INTERN LAYOUT_MISCHEN GRAPHIK_KURVE GRAPHIK_K GRAPHIK_TEST_KURVE%MANIPULATIONEN_KOPIEREN_VERSCHIEBEN_O RECTIN2 BREITE_VERKLEINERN BREITE_VERGROESSERN HOEHE_VERKLEINERN HOEHE_VERGROESSERN MANIPULATIONEN_VERZERREN_1 MANIPULATIONEN_SPIEGELN1$MANIPULATIONEN_KOPIEREN_VERSCHIEBEN1 GROESSE_AENDERN SPEZIAL_GESAMTANSICHT SONSTIGES_GESAMTANSICHT SPEZIAL_FL CHE_F SPEZIAL_FLAECHE_FUELLEN SPEZIAL_FUELLEN RECTFILL SPEZIAL_BEREICH_FUELLEN GRAPHMODE SPEZIAL_BOLD SPEZIAL_SHADOW SPEZIAL_SHADOW_EINST SPEZIAL_MUSTER_DEFINIEREN SPEZIAL_MUSTER_WAEHLEN HISTORY PAUSE WARTEN BMHD_LESEN_2 BODY_LESEN_2 REM_RECT LAYOUT_MISCHEN_ALT GRAPHIK_FREIHAND CURVEX CURVEY MESSAGE SCHNITTS SCHNITTW XRAST YRAST XRASTH YRASTH TAUGE LOETAUGE WINKEL XMOUSE YMOUSE SAVE_RECT REM_RECT REMRECT SPEICHERBEDARF REM_REMRECT MOUSEX XMOUSEX GRAPHIKMODUS TOGGLE PIXEL PIXELX PIXELY * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Datei MULTITEXT100.GFA (bzw. MULTITEXT100.ASC) MultiText ========= Version 1.00 Programm zum Generieren der unterschiedlichsten Schriften und Graphiken sowie deren Ausdruck auf Matrixdruckern Copyright by Wolfgang Schuler (WKS), 04.-10.1990 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Zuwenig Speicherplatz! (Auch bei der Initialisierung kann das Prg. abge- brochen werden m ssen!) In den meisten Prozeduren kann ein Menupunkt auf- gerufen werden! ============================ Initialisierung ================================ Nimmt alle Initialisierungen des Programms MultiText unter Verwendung der Initialisierungsunterprozeduren vor. MultiText 1.00 by WKS M&T 1992FF Programmname Screen-, Windowtitel voreinstellen F Aktuellen Datei-Zugriffspfad setzen Images initialisieren (203.2mm * 240.0mm: DIN A4 Einzelblatt) Versuchen, Superbitmap anzulegen Zuwenig Speicherplatz!! Verzeichnis aller verf gbaren Fonts aufbauen Aufbau des folgenden Window-Aufbaus unsichtbar machen Fenster f r Texteingabe und zugeh rige Eingabemaske generieren Arbeitsfl chen-Fenster aufbauen Super-Layer darauf installieren Probleme mit|Super-Layer! Gadgets des Arbeitsfl chen-Fensters $Kein Speicher f r|Preferences-Puffer! 'Zuwenig Speicherplatz|f r Undo-Funktion! TextFont-Struktur des aktuellen Fonts feststellen: Aktuelles Muster voreinstellen: Liest die Daten der Images ein, die f r die Gadgets ben tigt werden. &X1111111111111111 &X1100000000000011 &X1100000110000011 &X1100001111000011 &X1100011111100011 &X1100111111110011 &X1101111111111011 &X1100011001100011 &X1100011001100011 &X1100011001100011 &X1100011111100011 &X1100000000000011 &X1111111111111111 &X1111111111111111 &X1100000000000011 &X1100011111100011 &X1100011001100011 &X1100011001100011 &X1100011001100011 &X1101111111111011 &X1100111111110011 &X1100011111100011 &X1100001111000011 &X1100000110000011 &X1100000000000011 &X1111111111111111 &X11111111111111111111111111000000 &x11000000000000000000000011000000 &x11000000111000000000000011000000 &x11000011111111111111100011000000 &x11001111111000000001100011000000 &x11000011111111111111100011000000 &x11000000111000000000000011000000 &x11000000000000000000000011000000 &x11111111111111111111111111000000 &X11111111111111111111111111000000 &x11000000000000000000000011000000 &x11000000000000011100000011000000 &x11000111111111111111000011000000 &x11000110000000011111110011000000 &x11000111111111111111000011000000 &x11000000000000011100000011000000 &x11000000000000000000000011000000 &x11111111111111111111111111000000 Versucht, die Superbitmap anzulegen. Im Fehlerfall ist superbitmap%=0. Umrechnung mm in Pixel: MEMF_CLEAR, MEMF_CHIP Basisadresse der ersten und einzigen Bitplane: (Zuwenig Speicherplatz f r Bitplane) Adresse der Super-Bitplane in die Bitmap-Struktur eintragen: ffnet den Screen f r das Programm und liest wichtige Werte aus der Screen-Struktur aus. Nummer des Screens f r das Programm Arbeits-Screen ffnen Farben setzen Adresse der Layerinfo-Struktur Supergrafikbuch, S.168 Supergrafikbuch, S.209 Legt das Arbeitsfl chenfenster an. Nummer des Windows f r die Arbeitsfl Versucht, auf dem Arbeits-Window (Nummer arbeits_wind|) einen Super- Layer einzurichten, im Fehlerfall ist superlayer%=0. erdem wird um den Layer eine Box gezeichnet, die auf dem Arbeitswindow liegt. Zu initialisierende Variablen: Adresse des normalen Window-Rastports Adresse der normalen Window-Bitmap (Koordinaten des Layers sind auf linke obere Ecke des Screens bezogen (0,0)) (CreateUpFrontLayer() unter GFA falsch implementiert!) Wenn superlayer%<>0, also Super-Layer existiert (Permanente Deaktivierung des Layers durch eintragen der Fensteradresse in die Layer-Struktur) (Das Langwort ab layer%+40 ist ein Zeiger auf das Window) (Wichtig, auch f r Messagebehandlung, ansonsten Speicherverlust) Adresse der Super-Rastport-Struktur (Offsets: xoffset: 4, yoffset: 22) Benutzeroberl chen-Gestaltungselemente erzeugen: XF Ausgaben auf Arbeitswindow! Rahmen um Layer Senkrechte Linien verst Superbitmap s ubern: Installiert die Gadgets auf der Arbeitsfl (Balkenl nge darf nicht gr er werden als Reglerbereich!) Richtet auf dem aktuellen Window einen neuen Mauszeiger ein. 17 Langworte, 17 Zeilen &X00000000000000000000000000000000 &X00000000000000001111000000000000 &X01100000000000001001000000000000 &X01000000000000001011111000000000 &X00011100000000001110001000000000 &X00010000000000000010111111000000 &X00010111100000000010100001000000 &X00000100000000000011101111111000 &X00000101111100000000101000001000 &X00000101000000000000101011111000 &X00000001000000000000111010000000 &X00000001000000000000001010000000 &X00000001000000000000001010000000 &X00000000000000000000001110000000 &X00000000000000000000000000000000 &X00000000000000000000000000000000 &X00000000000000000000000000000000 Pull-Down-Menu erzeugen. Layout, Laden, Sichern,------------------, Mischen ------------------, Drucken,------------------, Neu Initialisieren,------------------, Ende,"" Text, Zeile eingeben ,"" Manipulation, Kopieren, Verschieben, Zentrieren, Invertieren Drehen, Spiegeln,! Vertikalachse,! Horizontalachse ndern, Verzerren,------------------, Bereich l schen,"" Spezial, Interpolieren,! Abtragen,! Auff --------------------, Rahmen,--------------------, Bold, Outline, Shadow --------------------, F llen, Bereich f llen,-------------------- Muster w hlen, Muster definieren,"" Graphik, Freihand,! kontinuierlich,! unterbrochen, Linie, Rechteck, Kreis, Ellipse, Kurve,----------, Pinsel,"" Optionen, Graphikmodus,! transparent,! replace,! XOR,! AND --------------, Linienart,! durchgezogen,! gestrichelt,! punktiert ! strichpunktiert,--------------, Mausposition,! aus,! mm,! Pixel,"" Sonstiges, Undo,------------------, Gesamtansicht,------------------ NewShell, Fed,------------------, Farben tauschen,"" Pull-Down-Menu initialisieren ( Voreinstellungen, H kchen): ! transparent ! durchgezogen ! ausF Zeile eingeben Fg voreingestellter Graphikmodus: transparent (JAM1) voreingestellte Linienart: durchgezogen Mausposition wird nicht angezeigt (1: Mausposition ! wird in cm, 2: Mausposition wird in Pixeln angezeigt) Stellt Druck-Preferences so ein, da der Ausdruck des Arbeitsfl chen- inhalts in der gew nschten Weise erfolgt. Steht nicht gen gend Speicher- platz f r den Puffer zur Verf gung, so ist prefs_puffer%=0. F Achtung: hier nicht GetPrefs! (GFA 3.041 Fehler) Alte Werte retten Schwarz-Wei -Darstellung Druckdichte 1 (120dpi*72dpi) Neue Einstellungen aktivieren r die Undo-Funktion mu eine eigene (unsichtbare) Bitmap angelegt werden, die mittels der Prozedur refresh mit der normalen (Arbeitsfl chen-) Bitmap vor Ver ndern der Arbeitsfl che synchronisiert wird. So re- sentiert die "Undo-Bitmap" immer den Zustand der "Arbeits-Bitmap" vor der letzten Ver nderung. Bei Bedarf wird die Arbeits-Bitmap mit der Undo-Bitmap synchronisiert, so da die letzte Operation auf der Arbeits- Bitmap r ngig gemacht ist. Das Anlegen der Undo-Bitmap ist die Aufgabe dieser Prozedur. Ist das Generieren der Undo-Bitmap gescheitert, so enth lt die globale Variable undo_bitmap% den Wert 0. MEMF_CLEAR, MEMF_PUBLIC (in die Bitmap-Struktur eintragen) Fe Undo-Bitmap mit Arbeits-Bitmap synchronisieren (hier s ubern) Legt ein alphabetisches Verzeichnis in dem Zeichenkettenfeld fonts$() der im Systemverzeichnis FONTS: vorhandenen Fonts an. Die Fontbezeichnungen sind nach der Prozedur in dem globalen Zeichenketten- feld font$() von font$(1) bis font$(anzahl&). Dabei ffnen der Diskfont-Library. diskfont.library Auslesen der Struktur: Anzahl der vorhandenen Fonts Stringarray entsprechend gro dimensionieren DISK FF (28 Zeichen) RAM FF 30 Zeichen f r den Fontnamen Fontname 5 Zeichen f r die Fontgr Fontgr Jedes Element hat damit eine nge von 63 Zeichen. In aufsteigender alphabetischer Reihenfolge sortieren Zuwenig Speicherplatz! OK ! diskfont.library fehlt! OK ! Erzeugt die Benutzeroberfl che f r die Texteingabefunktion (12 Gadgets) Konstanten: Name des voreingestellten Fonts: ?topaz.font 8 RAM F Anzahl der maximal im Fontselektor darstellbaren Eintr Nummer des Windows TexteingabeF TEXT:F( Fontselektor und zugeh rige Gadgets: FONT:Fh ?Fontname Gr e RAM/DISKF Topaz 8 - Font finden: Anzahl Fonts <= Zeilen im Selektor Anzahl Fonts > Zeilen im Selektor Topaz-Font kann in die oberste Zeile geschrieben werden ( Kann nicht ... Fonts in Selector schreiben: Aktiven (Topaz-8) Font markieren: Gadgets f r Scrolling installieren: (Balkenl nge darf nicht gr er werden als Reglerbereich!) STIL:F Unterstrichen! Kursiv! Fett! Outline! SATZ:F Zentriert! Abbruch! Default-Stil: Normal ============================================================================= ================================ Aufr umen ================================== Diese Prozedur gibt s mtlichen allokierten Speicherplatz zur ck und scht alle initialisierten Objekte. umen des Font-Equipments: Urspr nglichen (ROM-)Font setzen! Wenn im Multitasking gedruckt wurde, dann ben tigte Strukturen an das System zur ck und Device-Kanal schlie Speicherplatz der Super-Bitmap-Struktur zur ck, wenn sie existierte: Speicherplatz der Super-Bitplane zur Benutzeroberfl che f r Textfunktion schlie Speicherplatz der Gadgets zur Speicherplatz des Super-Layers zur ck, wenn er existierte: Alte Preferences-Einstellungen wieder herstellen: Alte Preferences-Einstellungen Speicherplatz f r "Undo-Bitmap" zur ck, falls sie existierte: Gibt alle beim Multitasking-Druck ge ffneten Strukturen frei. Teste, ob Druckvorgang noch andauert: *Druckvorgang dauert noch an.|Bitte warten!! Warten, bis Druckvorgang fertig Beim Drucken trat Fehler|NR. auf!! Entfernt alle im Texteingabe-Fenster vorhandenen Gadgets und gibt ihren belegten Speicherplatz zur ============================================================================= ========================= Message- und Menubehandlung ======================= schen (FALSE setzen) Kennummer des evt. eingetretenen Ereignisses Adresse des evt. betreffenden Objekts Kennummer des evt. angew hlten Menupunkts Speicherplatz (f r Int.-Msg.-Strukt.) zur Wenn ein Gadget gedr ckt wurde (Adresse ist dann in adresse% zu finden Wenn ein Gadget losgelassen wurde (Adresse ist dann in adresse% zu finden Intuiticks (periodische Nachricht von ! Intuition (hier zur Aktualisierung der ! Mauspositionsanzeige. Ausgabe in mm X / Y - Position in mm: mauspos|=2, Ausgabe in Pixeln X / Y - Position in Pixeln: Close-Gadget wurde gedr Wenn rechte Maustaste gedr Wenn Menupunkt angw Menu finden Menupunkt finden Untermenupunkt finden Verzweigt in Abh ngigkeit des durch den Benutzer gew hlten Menupunkts zu der entsprechenden Prozedur. Ereignis gilt damit als bearbeitet LadenF SichernF MischenF DruckenF NeuF InitialisierenF EndeFi Zeile eingeben F KopierenFD VerschiebenF ZentrierenF InvertierenF DrehenFr ! HorizontalachseFz ! VertikalachseFc ndernF VerzerrenF Bereich l schenF ! AbtragenF ! Auff llenFi RahmenF BoldF- OutlineF ShadowF llenFl Bereich f llenFg Muster w hlenF Muster definierenF ! kontinuierlichF ! unterbrochenF LinieF RechteckFF KreisF EllipseF KurveF PinselFF ! transparentF bisherigen Haken l schen neuen Haken setzen ! replaceFn bisherigen Haken l schen neuen Haken setzen ! XORFc bisherigen Haken l schen neuen Haken setzen ! ANDFc bisherigen Haken l schen neuen Haken setzen ! durchgezogenF bisherigen Haken l schen neuen Haken setzen ! gestricheltF bisherigen Haken l schen neuen Haken setzen ! punktiertFF bisherigen Haken l schen neuen Haken setzen ! strichpunktiertFd bisherigen Haken l schen neuen Haken setzen ! ausFF Wegen XOR erforderlich bisherigen Haken l schen neuen Haken setzen Titel l schen ! mmF bisherigen Haken l schen neuen Haken setzen ! PixelF- bisherigen Haken l schen neuen Haken setzen UndoF GesamtansichtF FedF :Tools/Fed! NewShellF- NewShell! Farben tauschenF HilfeF Ein Gadget wurde gedr ckt, abh ngig von der in adresse% stehenden Gadget-Adresse wird entweder das horizontale oder das vertikale Prop.-Gadget abgefragt bzw. auf das Bet tigen der Boolean-Gadgets reagiert. Dies geschieht solange, bis das bet tigte Gadget wieder losgelassen wird. Es ist n tig, adresse% in adr% zu sichern, da sich adresse% bei dem erneuten Aufruf der message-Prozedur in der Schleife ndern kann ============================================================================= ================================= Menu "Layout" ============================= dt ein Layout (Bitmap-Graphik) im IFF-ILBM-Format. Es werden IFF-Bilder geladen, die folgenden Anspr chen gen - eine Bitplane (Tiefe=1) - Breite, H he innerhalb der zul ssigen Ma CMAP- und CAMG-Chunk werden nicht ausgewertet, es k nnen also auch LORES- Bilder geladen werden. Laden / IFF-ILBM! Load! (Wenn dateiname$="" wurde Abbruchknopf angew Keine Datei!! Datei existiert nicht!! aktuellen Pfad setzen MEMF_CLEAR, MEMF_PUBLIC (Wenn Dateil nge < 12) Keine IFF-ILBM-Datei!! 12 ersten Bytes einlesen. Und auswerten: ILBMF Keine IFF-ILBM-Datei!! Bitte warten!Fn BMHDF BODYF Unbekannten Chunk berspringen: Speicher f r Puffer freigeben Datei wieder schlie Sichert den Inhalt der aktuellen Arbeitsfl chenbitplane im IFF-Format unter einem vom Benutzer zu bestimmenden Dateinamen. Die Daten werden in unkomprimierten Format abgespeichert. Anzahl der Bytes, die die Bitplane beansprucht, berechnen: Sichern / IFF-ILBM! Save! Keine Datei!! Zugriffspfad aktualisieren Kennung IFF anh .IFFF 'Datei existiert bereits!| berschreiben?! Nein|Ja! antwort|=0, wenn Datei nicht existiert fen, ob Laufwerk voll: nge der zu berschreibenden Datei ermitteln Zuwenig Platz auf Laufwerk! MEMF_CLEAR, MEMF_PUBLIC Zuwenig Speicherplatz!! Bitte warten!F CAMG-, BMHD-, CMAP-Chunks in Puffer schreiben: FORM FC Gesamtl nge (ohne "FORM") ILBM F BMHD F BMHD-L Tiefe xaspect yaspect Screen-Breite Screen-H CMAP FG CMAP-L CAMG Fn CAMG-L Viewmode: HIRES BODY F= Inhalt der Window-Bitmap -> Superbitmap Bitplane-Inhalt speichern dt ein Layout (Bitmap-Graphik) im IFF-ILBM-Format in die aktuelle Arbeitsfl che. Die Graphik mu dabei folgenden Anspr chen gen - Breite und H he nicht gr er als die entsprechenden Ma e der Arbeitsfl - eine Bitplane (Tiefe=1) CMAP- und CAMG-Chunk werden nicht ausgewertet, es k nnen also auch LORES- Bilder geladen werden. Mischen / IFF-ILBM! Load! Nicht mit DIR$(0) arbeiten! (Sonst Speicherplatzfressen) (Wenn dateiname$="" wurde Abbruchknopf angew Keine Datei!! Datei existiert nicht!! MEMF_CLEAR, MEMF_PUBLIC (Wenn Dateil nge < 12) Keine IFF-ILBM-Datei!! 12 ersten Bytes einlesen. Und auswerten: ILBMF Keine IFF-ILBM-Datei!! Superbitmap --> Undo-Bitmap (Es ist wichtig, die zweite Bedingung zu berpr fen, weil nach dem letzten Chunk noch 1 Byte kommen kann (F llbyte?), das bei Inter- pretation als Chunk zur Fehlermeldung "Fileende erreicht" f Es werden nur die Chunks BMHD und BODY ausgewertet. BMHDF BODYF Unbekannten Chunk berspringen: Rastport-Inhalt solange dem Mauszeiger folgen lassen, bis linke Maustaste gedr ckt wird: Speicher f r Puffer freigeben Datei wieder schlie Liest den BMHD (BitMapHeaDer)-Chunk (Amiga Intern 2, S.298) und initialisiert gem den Angaben in diesem Chunk eine Arbeitsfl (Der BMHD-Chunk ist immer 20 Bytes lang.) Gesamten Chunk in Pufferspeicher einlesen Breite der Graphik he der Graphik Tiefe des Screens (= Anzahl Bitplanes) Kompressionsverfahren Arbeitsfl che demgem initialisieren: Nur einfarbige Graphiken!! (Arbeitsfl che soll belassen werden und neuer Rastport gem den Ma der Graphik initialisiert werden) +Graphik zu gro r|aktuelle Arbeitsfl che!! Zuwenig Speicherplatz!! Zuwenig Speicherplatz!! (Arbeitsfl che soll gem den Ma en der Graphik initialisiert werden) 33333 (Breite/H he in mm) e falsch!! Liest den BODY-Chunk und bertr gt die Daten in die zuvor beim Lesen des BMHD-Chunks (Prozedur bmhd_lesen) ge ffneten Bitmap. Dabei k nnen un- komprimierte und nach dem ByteRun1-Verfahren komprimierte Daten gelesen werden. Die Kompressionsart wurde beim Lesen des BMHD-Chunk ermittelt. BMHD-Chunk mu bereits gelesen sein! Bytes pro Zeile der Graphik Bytes pro Zeile der Bitmap unkomprimiert nach ByteRun1-Verfahren komprimiert Wenn Chunkl nge ungerade, noch das llbyte lesen, sonst wird in chunk_lesen versucht, weitere Chunks zu lesen, wobei ! das Fileende erreicht wird. "Unbekanntes|Kompressionsverfahren!! BODY-Chunk berlesen &Chunks fehlen|bzw. Reihenfolge falsch!! F BODY-Chunk berlesen glicht Multitasking-Druck. Ist zuwenig Speicherplatz vorhanden oder tritt sonst ein Fehler auf, so wird single-task gedruckt (Prozedur synchron_drucken wird aufgerufen). Wirklich drucken?! Ja | Nein ! Superbitmap mit normaler Bitmap synchronisieren: ~CopySBitMap(superlayer%) ! Komplement re Funktion Parameter f r Druckausgabe setzen: Wenn schon einmal im Multitasking gedruckt wurde, dann die benutzten Strukturen und Kan le schlie en und benutzten Speicher zur ckgeben: Sichern des Superrastports: ;Leider zuwenig Speicher|f r Multitaskingdruck|Bitte warten!! Speicherplatz f r die ben tigten Strukturen allokieren: Undo-Bitmap Berechnung der linken oberen Ecke des zu verschiebenden Bereichs relativ zu B(xb&|yb&): Bereich dem Mauszeiger folgen lassen: Wenn sich Mauszeigerkoordinaten ge ndert Zentrieren eines rechteckigen Bereichs bei freier Beweglichkeit in y-Richtung Eingabe des zu verschiebenden Bereichs Superbitmap --> Undo-Bitmap Berechnung der linken oberen Ecke des zu verschiebenden Bereichs relativ zu B(xb&|yb&): Bereich an der ursp. Stelle ! l schen Bereich dem Mauszeiger in y-Richtung folgen lassen: Wenn sich Mauszeiger-y-koordinate ge ndert hat, Bereich verschieben Superbitmap --> Undo-Bitmap Ausgabeteil: Bitte warten!Fn Superbitmap mit normaler Bitmap synchronisieren: schen des Quellbereichs auf der Arbeitsfl Ausgabeteil (mit Verarbeitung): Superbitmap --> Undo-Bitmap Wenn Punkt gesetzt (schwarz) Es mu unbedingt darauf geachtet werden, da vor Verlassen der Prozedur der Rastport superrast% wieder zum aktuellen Rastport gemacht wird, weil sonst keine Eingaben mehr m glich sind ( ber den IDCMP) und das System her oder sp ter abst Spiegeln eines rechteckigen Bereichs an seiner horizontalen bzw. vertikalen Spiegelachse. Superbitmap --> Undo-Bitmap Horizontale Spiegelachse Vertikale Spiegelachse Eingabe des Quell- und des Zielbereichs, Umrechnung des Quell- auf den Zielbereich. Wenn seitenverhaeltnis_gleich!=FALSE, kann das Seitenver- ltnis des Quellbereichs von dem des Zielbereichs differieren, ansonsten bleibt es gleich. Bitte warten!Fn Superbitmap --> Undo-Bitmap sonst Division durch 0! Wenn Zielbreite <> Quellbreite Breite angleichen: Bei Verkleinern berstehendes St ck entfernen: $ Bei Vergr Wenn Zielh he <> Quellh he angleichen: Bei Verkleinern berstehendes St ck entfernen: $ Bei Vergr Superbitmap --> Undo-Bitmap Berechnet den Bildpunkt (qx&,qy&) zu dem Punkt (px&,py&) nach der Drehung um das Drehzentrum (zx&,zy&) um den Winkel zwischen der Geraden durch Z und P und der Horizontalen. ROUND nicht vergessen! Berechnet den Winkel zwischen der Strecke ZP und der Horizontalen durch Z. F r den Winkel alpha gilt: 0<=alpha<2*PI (1. Quadrant) (4. Quadrant) (2. und 3. Quadrant) ============================================================================= ================================= Menu "Spezial" ============================ Superbitmap --> Undo-Bitmap Bitte warten!Fn Spalte Zeile Wenn Punkt selbst schwarz Wenn West-Punkt wei Wenn Nord- und Nordwest-Punkt wei Wenn S d- und S dwest-Punkt wei Wenn Ost-Punkt wei Wenn Nord- und Nordost-Punkt wei Wenn S d- und S dost-Punkt wei schen der berechneten und in x$ und y$ gespeicherten Punkte: Superbitmap --> Undo-Bitmap Bitte warten!Fn Spalte Zeile Wenn Punkt selbst wei Wenn West-Punkt schwarz Wenn Nord- und Nordwest-Punkt schwarz Wenn S d- und S dwest-Punkt schwarz Wenn Ost-Punkt schwarz Wenn Nord- und Nordost-Punkt schwarz Wenn S d- und S dost-Punkt schwarz Setzen der berechneten und in x$ und y$ gespeicherten Punkte: Superbitmap --> Undo-Bitmap Zuwenig Speicher!! Superbitmap --> Undo-Bitmap Oder-Verkn pfung der Bitmaps EXOR-Verkn pfung der Bitmaps Beispielwerte, solange spezial_shadow_einstellen noch in Arbeit Zuwenig Speicher!! Superbitmap --> Undo-Bitmap Alte Form "outlinen": Oder-Verkn pfung der Bitmaps EXOR-Verkn pfung der Bitmaps Aktuelles Muster setzen: Dann liegt benutzerdefiniertes Muster vor Sonst ist das aktuelle Muster aus dem GFA-Vorrat Superbitmap --> Undo-Bitmap Bitte wartenF Warten, bis Blitter fertig ist Wieder r cksetzen Aktuelles Muster sezten: Dann liegt benutzerdefiniertes Muster vor Sonst ist das aktuelle Muster aus dem GFA-Vorrat Superbitmap --> Undo-Bitmap JAM2 und INVERSVID Wieder JAM1 Warten, bis Blitter fertig ist Fn Wieder r cksetzen Nummer des Windows zum Muster-einstellen llmuster einstellen (Mit linker Maustaste anklicken)Fn Sonst kann es Probleme geben! Boxen mit Mustern erzeugen: Wieder r cksetzen!!! Warten, bis linke Maustaste gedr ckt und Zeile, Spalte ermitteln Zuordnung Zeile, Spalte zu Stil und Muster: Wieder r cksetzen! Definieren des aktuellen F llmusters durch den Benutzer. Breite und H he des von der Box eingerahmten Bereichs: 16 Pixel Alte Box l schen: Neue Box zeichnen: Box l schen: Alle 16 Bits in der Breite bearbeiten Zur Erkennung in Prozeduren zum F llen, da kein Muster aus dem GFA-Vorrat das aktuelle Muster ist, sondern ein benutzerdefiniertes. Erzeugt einen Rahmen um die Superbitplane, d.h. alle Punkte mit extremalen Koordinaten werden gesetzt. Undo-Arbeitsfl che synchronisieren Umrahmung ============================================================================= ================================= Menu "Graphik" ============================ Koordinaten des gew hlten Punktes Zeichnen von Linie (objekt|=0), Rechteck (objekt|=1), Kreis (objekt|=2) oder Ellipse (objekt|=3) Koordinaten des ersten Punktes Anfangspunkt setzen (wird in der Schleife gel scht) altes Objekt l schen neues Objekt zeichnen schen durch erneutes Zeichnen an letzte Position (Graphmode 2): Undo-Bitmap synchronisieren Aktuellen Graphikmodus setzen Aktuelle Linienart setzen Dem Graphikmodus entsprechend zeichnen Durchgezogene Linienart setzen Zum Zeichnen einer Bezier-Kurve mit dem GFA-BASIC-Befehl CURVE. Koordinaten des ersten Punktes Anfangswerte f r zweiten Punkt Anfangspunkt setzen (wird in der Schleife gel scht) alte Linie l schen neue Linie zeichnen Bis linke Maustaste wieder losgelassen Linie l schen Kurve Bis linke Maustaste gedr schen F!% Undo-Bitmap synchronisieren und gem Graphikmodus und Linienart zeichnen Fn# (durchgezogene Linienart) hlen eines "Pinsels" und Zeichnen mit diesem. ============================================================================= ================================== Menu "Sonstiges" ========================= Kopiert den Inhalt der "Undo-Bitmap", sofern diese existiert, in die Superbitmap. )Fehler beim Kopieren der|Bitplaneinhalte!! Normale Bitmap mit Superbitmap synchronisieren (Superbitmap -> Normale Bitmap) Zuwenig Speicher f r Undo! Wenn die Arbeitsfl che gr er als der Super-Layer ist, so verkleinert diese Prozedur den Arbeitsfl cheninhalt unter Beibehaltung des Seiten- ltnisses so, da der Arbeitsfl cheninhalt auf einmal sichtbar ist )Undo-Bitmap fehlt,|zuwenig Speicherplatz!! Bitte warten!Fn Arbeits-Bitmap -> Undo-Bitmap (links oben: 0|0) (urspr ngliche Pos.) Undo-Bitmap -> Arbeits-Bitmap Tauscht Hintergrund- und Zeichenfarbe ============================================================================= ============================= Gadget-Routinen =============================== Erzeugt ein umrandetes Boolean-Text-Gadget. Speicher f r Gadget-Struktur reservieren: ubern!) 44 Bytes f r Gadget-Struktur 16 Bytes f r Border-Struktur 20 Bytes f r Koordinaten f r den Border 20 Bytes f r IntuitionText-Struktur Allgemeine Gadget-Struktur (44 Bytes): kein weiteres Gadget X-Wert der linken oberen Ecke (hier relativ zum rechten Rand) Y-Wert der linken oberen Ecke Breite des Klickbereiches he des Klickbereiches Gadget_Flags Gadget_Activation (GADGIMMEDIATE, RELVERIFY, |TOGGLESELECT) Gadget_GadgetType (BOOLGADGET) F Zeiger auf Border-Struktur Zeiger auf Graphik bei der Aktivierung Zeiger auf Text nicht unterst Zeiger auf spezielle Informationen Gadget-Nr. (User-Data, keine Funktion) Border-Strukur (zum Zeichnen der Umrahmung) (16 Bytes): Offset in x-Richtung Offset in y-Richtung Hintergrundfarbe Vordergrundfarbe Zeichenmodus Anzahl der Koordinatenpaare Zeiger auf Koordinatentabelle Keine weiteren Borders Koordinaten-Tabelle f r die Border (bei Rechteck 20 Bytes): IntuitionText-Struktur (20 Bytes): String nullterminieren! Textl nge ermitteln, damit Text mittig ausgegeben wird: *IText Textl nge in Pixeln! FrontPen BackPen DrawMode AdjustToWord LeftEdge TopEdge *TextAttr *IText *NextText Gadget (an letzter Position) einf Ausgangsvariablen setzen: Erzeugt ein Boolean-Image-Gadget. Speicher f r Gadget-Struktur reservieren: ubern!) 44 Bytes f r Gadget-Struktur 20 Bytes f r Image-Struktur Allgemeine Gadget-Struktur (44 Bytes): kein weiteres Gadget X-Wert der linken oberen Ecke (hier relativ zum rechten Rand) Y-Wert der linken oberen Ecke Breite des Klickbereiches he des Klickbereiches Gadget_Flags (GADGHCOMP, GADGIMMAGE) Gadget_Activation (RELVERIFY, GADGIMMEDIATE, |TOGGLESELECT) Gadget_GadgetType (BOOLGADGET) Zeiger auf Image-Struktur Zeiger auf Image bei der Aktivierung Zeiger auf Text nicht unterst Zeiger auf spezielle Informationen Gadget-Nr. (User-Data, keine Funktion) Image-Struktur (20 Bytes): x-Offset y-Offset Imagebreite Imageh Anzahl Bitplanes Zeiger auf Image-Daten PlanePick PlaneOnOff Zeiger auf weiteres Image Gadget (an letzter Position) einf Ausgangsvariablen setzen: Erzeugt ein String-Gadget. Speicher f r Gadget-Struktur reservieren: ubern!) FF 44 Bytes f r Gadget-Struktur 36 Bytes f r StringInfo-Struktur 16 Bytes f r Border-Struktur 20 Bytes f r Koordinaten f r den Border =116 Bytes max_char& Bytes f r Textpuffer max_char& Bytes f r Undo-Puffer Allgemeine Gadget-Struktur (44 Bytes): kein weiteres Gadget X-Wert der linken oberen Ecke (hier relativ zum rechten Rand) Y-Wert der linken oberen Ecke Breite des Klickbereiches he des Klickbereiches Gadget_Flags (GADGHCOMP) Gadget_Activation (RELVERIFY,GADGIMMEDIATE,STRINGCENTER|STRINGRIGHT) Gadget_GadgetType (STRGADGET) F Zeiger auf Border-Struktur Zeiger auf Graphik bei der Aktivierung Zeiger auf Text nicht unterst Zeiger auf spezielle Informationen Gadget-Nr. (User-Data, keine Funktion) SpecialInfo-Struktur (StringInfo) (36 Bytes): Zeiger auf Textpuffer Zeiger auf Undo-Puffer Cursorposition F Max. Anzahl Zeichen Text ab diesem Zeichen ausgeben Zeichenposition im Undo-Puffer Anzahl Zeichen im Textpuffer Anzahl der im Container sichtbaren Zeichen horizontaler Container-Offset vertikaler Container-Offset Zeiger auf aktuellen Rastport Eingabe bei Integer-Gadgets Zeiger auf Tastaturbelegung Border-Strukur (zum Zeichnen der Umrahmung) (16 Bytes): Offset in x-Richtung Offset in y-Richtung Hintergrundfarbe Vordergrundfarbe Zeichenmodus Anzahl der Koordinatenpaare Zeiger auf Koordinatentabelle Keine weiteren Borders Koordinaten-Tabelle f r die Border (bei Rechteck 20 Bytes): Gadget (an letzter Position) einf Ausgangsvariablen setzen: Erzeugt ein Proportional-Autoknob-Gadget f r Scrolling in horizontaler oder vertikaler Richtung. ,int_puffer% Speicher f r Gadget-Struktur reservieren: ubern!) 44 Bytes f r Gadget-Struktur 22 Bytes f r PropInfo-Struktur 8 Bytes f r Intuition-Puffer Summe: 74 Bytes f r gesamte Struktur Allgemeine Gadget-Struktur (44 Bytes): kein weiteres Gadget X-Wert der linken oberen Ecke Y-Wert der linken oberen Ecke Breite des Klickbereiches he des Klickbereiches Gadget_Flags (GADGHCOMP) Gadget_Activation (GADGIMMEDIATE, RELVERIFY, |TOGGLESELECT) Gadget_GadgetType (PROPGADGET) Zeiger auf Graphik-Struktur Zeiger auf Image bei der Aktivierung Zeiger auf Text nicht unterst Zeiger auf spezielle Informationen Gadget-Nr. (User-Data, keine Funktion) SpecialInfo-Struktur (PropInfo) (22 Bytes): Flags (FREEVERT, AUTOKNOB) X-Position des Schiebers Y-Position des Schiebers Balkenbreite / Schrittweite Balkenh he / Schrittweite Flags (FREEHORIZ, AUTOKNOB) X-Position des Schiebers Y-Position des Schiebers Balkenbreite / Schrittweite Balkenh he / Schrittweite folgende sechs Worte werden von Intuition beschrieben: Box-Breite Box-H absolute Schrittweite horizontal absolute Schrittweite vertikal X-Wert des linken Randes der Box Y-Wert des oberen Randes der Box Puffer f r Eintragungen der aktuellen Daten durch Intuition (8 Bytes): X-Position des Schiebers Y-Position des Schiebers Breite des Schiebers he des Schiebers Adresse der Speicherzellen f r y-Position des Balkens Adresse der Speicherzellen f r x-Position des Balkens Gadget (an letzter Position) einf Ausgangsvariablen setzen: Entfernt ein Gadget und gibt den f r seine Struktur ben tigten Speicherplatz an das System zur Nur, wenn Gadget existiert, sonst Absturz! Fs Zur Verdeutlichung der Tatsache, da das Gadget ! nicht mehr existiert! ============================================================================= ================================ Sonstiges ================================== bertr gt den Inhalt der Superbitmap in die "Undo-Bitmap", sofern diese vorhanden ist. Superbitmap mit normaler Bitmap synchronisieren )Fehler beim Kopieren der|Bitplaneinhalte!! Eingabe eines rechteckigen Bereiches durch den Benutzer mit der Maus. Wenn gefuellt!=TRUE, dann wird der durch den Benutzer eingebene Bereich durch ein gef lltes Rechteck veranschaulicht. Variablen l schen Warten, bis linke Maustaste gedr ckt oder Menupunkt angew Warten, bis Ereignis eintritt (Multitasking!) Koordinaten der ersten Ecke Startkoordinaten der zweiten Ecke Wenn sich Mauszeigerkoordinaten ge ndert haben, Rechteck neu zeichnen Box l schen Eingabe zweier Rechtecke, die in der Prozedur manipulationen_verzerren als Quellrechteck (das erste einzugebende Reckteck) und als Zielrechteck (das zweite einzugebende Reckteck) interpretiert werden. Dabei liegen beide Rechtecke immer in demselben Quadranten, was die Ergonomie der Bedienung verbessert (Eindeutigkeit, Konsistenz). Quellbereich eingeben: Quellbereichsbox markieren Seitenverh ltnis des Quell-Rechtecks x/y: sv=(quell_rux&-quell_lox&+1)/(quell_ruy&-quell_loy&+1) Eingabe des Zielbereiches: IF x&<>ziel_x& OR y&<>ziel_y& Gefordert: sv = (x&-ox&+1)/(y&-oy&+1) Altes Ziel-Recheck l schen Neues Ziel-Recheck zeichnen schen der Rechtecke und Berechnung wichtiger Gr Quellbereichsmarkierung l schen Altes Ziel-Recheck l schen Linke obere Ecke des Zielbereichs: Rechte untere Ecke des Zielbereichs: Quellbereichsmarkierung l schen Realisierung der in GFA-Basic 3.0 nicht implementierten Intuition-Funktion NewModifyProp() mittels des Befehls RCALL. (Die unter GFA-Basic 3.0 vorhandene Funktion ModifyProp() funktioniert nicht korrekt! Au erdem w re es ungeeignet, weil die folgenden Gadgets neu ge- zeichnet werden, was evt. nachfolgende Toggle-Select-Boolean-Gadgets zer- ren kann. A0: Gadget A1: Window A2: Requester D0: Flags F D1: HorizPot D2: VertPot D3: HorizBody ~F D4: VertBody D5: Numgad Betriebssystemfunktionsaufruf A0: *LayerInfo A1: *Bitmap A2: *Super-Bitmap D4: Flags Betriebssystemfunktionsaufruf Adresse des Layers in D0 (Zu Testzwecken) Zeichnet ein in einer String-Variablen gespeichertes Image mit der Betriebssystem- (Graphics-) Funktion DrawImage() an die Stelle x&|y& im Rastport rastport%. Das Image besitzt dabei die Breite breite& und die H he hoehe&. Nicht genug Speicherplatz! Image-Struktur (20 Bytes): x-Offset y-Offset Imagebreite Imageh Anzahl Bitplanes Zeiger auf Image-Daten PlanePick PlaneOnOff Zeiger auf weiteres Image (Ermittelt Speicherbedarf von mit GET zu erfassenden Bereichen (Eine Bitplane)) Umrechnung mm in Pixel: Umrechnung Pixel in mm: ckgabe: Adresse des neu angelegten Rastports Diese Funktion legt einen neuen Rastport an (inklusive Bitmap und einer Bitplane), in den der durch lox&,loy&,rux&,ruy& spezifizierte Bereich, aus dem Rastport quellrastport% kopiert wird. R ckgabeparameter ist die Adresse des neu geschaffenen Rastports oder, wenn etwas schiefgelaufen ist, 0. Diese Funktion liquidiert die durch rastport% angegebene Rastport-Struktur sowie die zugeh rige Bitmap-Struktur und gibt den f r die Strukturen und die Bitplane ben tigten Speicher an das System zur Breite und H he aus der Bitmap- Struktur Funktion nie ohne RETURN, sonst Fehlermeldung! =============================================================================